#include <iostream>
using namespace std;

// 默认情况下，C++编译器至少给一个类添加3个函数
// 1.默认构造函数(无参，函数体为空)
// 2.默认析构函数(无参，函数体为空)
// 3.默认拷贝构造函数，对属性进行值拷贝

//构造函数调用规则如下：
//。如果用户定义有参构造函数，C++不再提供默认无参构造，但是会提供默认拷贝构造
//。如果用户定义拷贝构造函数，C++不会再提供其他构造函数
class Person{
public:
//无参(默认)构造函数
    Person(){
        cout << "无参构造函数" << endl;
    }
    ~Person(){
        cout << "析构函数" << endl;
    }
    Person(int a){
        m_Age = a;
        cout << "有参构造函数" << endl;
    }
    Person(const Person &p){
        cout << "拷贝构造函数调用" << endl;
        m_Age = p.m_Age;
    }
    int m_Age;
};

void test01(){
    Person p;
    p.m_Age=18;
    Person p2(p);
    cout << "p2的年龄为:" << p2.m_Age << endl;
}

void test02(){
    Person p(28);
    Person p2(p);
    cout << "p2的年龄为:" << p2.m_Age << endl;
}

int main(){
    // test01();
    test02();
    system("pause");
	return 0;
}

